package cn.aopmin.java.api.lang;

/**
 *线程创建和启动的两种方式
 * @author 白豆五
 * @since 2025/1/29
 */
public class ThreadXCreatStartTest1 {

    /**
     * main方法也是一个线程，主线程
     * 主线程由JVM创建
     * JVM启动时，除了创建主线程，还会创建一些其他的线程，比如 GC线程 等
     * @param args
     */
    public static void main(String[] args) {
        //创建Thread子类对象调用start方法启动线程
        CustomThread customThread = new CustomThread();
        customThread.start();
        System.out.println(String.format("主线程 [%s] 输出: hello world", Thread.currentThread().getName()));
    }
}

/**
 * 创建线程第一种方式：继承Thread类 重写run方法
 */
class CustomThread extends Thread {

    /**
     * 线程执行的任务方法
     */
    @Override
    public void run() {
        for (int i = 0; i < 10; i++) {
            String str = String.format("子线程 [%s] 输出：%d", Thread.currentThread().getName(), i);
            System.out.println(str);
        }
    }
}